package com.kinyx.framework.annotation.assist;

import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.kinyx.framework.annotation.assist.Throws.List;

/**
 * 标注可能抛出异常
 */
@Target({
		ElementType.METHOD, ElementType.CONSTRUCTOR
})
@Retention(RetentionPolicy.CLASS)
@Repeatable(List.class)
public @interface Throws {

	/** @return 抛出异常的方法 */
	String at();

	/** @return 异常枚举名 */
	String value();

	/** @return 抛出异常的逻辑 */
	String when();

	/** @return 附加信息 */
	String x() default "";

	/**
	 * 标注可能抛出异常
	 */
	@Target({
			ElementType.METHOD, ElementType.CONSTRUCTOR
	})
	@Retention(RetentionPolicy.CLASS)
	@interface List { Throws[] value(); }

}
